﻿using System;
using System.Collections.Generic;

namespace OurSite.Business.Event
{
    public interface IEventRepository
    {
        void Add(Event evt);
        void Update(Event evt);
        void Remove(Event evt);
        Event GetById(Guid eventId);
        Event GetByEventCode(int eventCode);
        Event GetByName(string name);
        IList<Event> GetAllEvents();
        IList<Event> GetByYear(int year);
        IList<Event> GetEventsByCountry(string value);
        IList<Event> GetEventsByState(string value);
        IList<Event> GetEventsByCity(string value);
        IList<Event> GetEventsBySubCategory(string value);
        IList<int> GetDistinctYears();
        IList<int> GetDistinctAllYears();
        IList<int> GetDistinctYearsByFamily(int familyCode);
        IList<string> GetDistinctRegions(string value);
        IList<string> GetDistinctCountries(string region, string value);
        IList<string> GetDistinctStates(string country, string value);
        IList<string> GetDistinctCities(string state, string value);
        int GetNextEventCode();

        EventLight GetEventLightById(Guid eventId);
        List<EventLight> GetAllEventLights();
        List<EventLight> GetEventLightsByYear(int year);
        List<string> GetDistinctRegions();
        List<string> GetDistinctCountries(string region);
        List<string> GetDistinctStates(string country);
        List<string> GetDistinctCities(string state);
    }
}
